package com.example;

import com.example.config.AppConfig;
import com.example.task.TimedTask;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.util.concurrent.ThreadPoolExecutor;

/**
 * 主程序类，加载Spring容器并执行任务
 */
public class Main {
    public static void main(String[] args) {
        // 初始化Spring注解配置的IOC容器
        AnnotationConfigApplicationContext context = 
            new AnnotationConfigApplicationContext(AppConfig.class);
        
        // 从容器中获取线程池和任务实例
        ThreadPoolExecutor executor = context.getBean("taskExecutor", ThreadPoolExecutor.class);
        TimedTask timedTask = context.getBean(TimedTask.class);
        
        // 提交任务到线程池执行
        executor.submit(timedTask);
        
        // 等待任务完成后关闭线程池和容器
        try {
            // 等待任务执行完成（稍多于1分钟）
            Thread.sleep(61000);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        } finally {
            // 关闭线程池
            executor.shutdown();
            // 关闭Spring容器
            context.close();
        }
    }
}
